package com.gitee.feizns.quickstart.ding.talk.spring.boot.autoconfigure.db.mybatis.flex.mapper;

import com.gitee.feizns.quickstart.ding.talk.spring.boot.autoconfigure.db.mybatis.flex.pojo.DdUser;
import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.query.QueryChain;
import com.mybatisflex.core.update.UpdateChain;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Optional;
import java.util.Set;

/**
 * 用户映射器
 * @author feizns
 * @since 2025/3/22
 */
@Mapper
public interface DdUserMapper extends BaseMapper<DdUser> {

    /**
     * 找到由编号如选择
     * @param id 编号
     * @return {@link Optional }<{@link DdUser }>
     */
    static Optional<DdUser> findByIdAsOpt(Long id) {
        return QueryChain.of(DdUser.class).eq(DdUser::getId, id).oneOpt();
    }

    /**
     * 按 OPT 用户 ID 查找
     * @param userid 用户 ID
     * @return {@link Optional }<{@link DdUser }>
     */
    static Optional<DdUser> findByUseridAsOpt(String userid) {
        return QueryChain.of(DdUser.class).eq(DdUser::getUserid, userid).oneOpt();
    }

    /**
     * 删除根据用户 ID
     * @param userid 用户 ID
     */
    static void removeByUserid(String userid) {
        UpdateChain.of(DdUser.class).eq(DdUser::getUserid, userid).remove();
    }

    /**
     * 找到用户 ID根据编号
     * @param id 编号
     */
    static String findUseridById(Long id) {
        //noinspection unchecked
        return QueryChain.of(DdUser.class).select(DdUser::getUserid).eq(DdUser::getId, id).objAs(String.class);
    }

    /**
     * 查找 userid 列表
     * @return {@link Set }<{@link String }>
     */
    static List<String> findUseridList() {
        //noinspection unchecked
        return QueryChain.of(DdUser.class).select(DdUser::getUserid).objListAs(String.class);
    }

}
